using System.Collections.Generic;
using LitJson;
using UnityEngine;

namespace Framework.Save
{
    public static class JsonUtil
    {
        public static JsonData ToJson(this Transform transform)
        {
            JsonData json = new JsonData();
            json.SetJsonType(JsonType.Array);
            var pos = transform.position;
            var rot = transform.rotation;
            var scale = transform.localScale;
            json[0] = pos.x;
            json[1] = pos.y;
            json[2] = pos.z;
            json[3] = rot.x;
            json[4] = rot.y;
            json[5] = rot.z;
            json[6] = rot.w;
            json[7] = scale.x;
            json[8] = scale.y;
            json[9] = scale.z;
            return json;
        }
        
        public static void LoadJson(this Transform transform, JsonData json)
        {
            transform.position = new Vector3((float)json[0], (float)json[1], (float)json[2]);
            transform.rotation = new Quaternion((float)json[3], (float)json[4], (float)json[5], (float)json[6]);
            transform.localScale = new Vector3((float)json[7], (float)json[8], (float)json[9]);
        }

        public static JsonData NewArray()
        {
            var json = new JsonData();
            json.SetJsonType(JsonType.Array);
            return json;
        }

        public static JsonData NewObject()
        {
            var json = new JsonData();
            json.SetJsonType(JsonType.Object);
            return json;
        }

        public static JsonData NewObject<T>()
        {
            var json = new JsonData();
            json.SetJsonType(JsonType.Object);
            json["type"] = typeof(T).Name;
            return json;
        }
    }
}